package com.StreamTest;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

/*
定义main()方法，按以下顺序编写程序：
定义集合List<String>，添加以下数据：
			“张三丰”
			“王思聪”
			“张飞”
			“刘晓敏”
			“张靓颖”
使用Stream流的forEach()方法打印集合的所有元素

 */
public class test1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>(List.of("王佳乐","张三丰", "王思聪", "张飞", "刘晓敏", "张靓颖","王敏"));
        list.stream().forEach(s -> System.out.println(s));
        System.out.println("------------------------------");
        list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
        long count = list.stream().filter(s -> s.startsWith("张")).count();
        System.out.println(count+"个");
        System.out.println("------------------------------");
        /**
         * 重新获取Stream流，用filter()方法筛选出所有的“王”姓学员；
         * 筛选后，跳过前1个，打印剩余的人员。
         */
        list.stream().filter(s -> s.startsWith("王")).limit(1).forEach(s -> System.out.println(s));
        System.out.println("------------------------------");
        /*
        先筛选出所有的“张”姓学员；
        再筛选出所有的“王”姓学员；
        将两个流合并为一个流
        打印合并后的每个元素。
        */
        Stream<String> st1 = list.stream().filter(s -> s.startsWith("张"));
        Stream<String> st2 = list.stream().filter(s -> s.startsWith("王"));
        Stream.concat(st1,st2).forEach(s -> System.out.println(s));
    }
}
